.TH xfs_metadump 8
.SH NAME
xfs_metadump \- copy XFS filesystem metadata to a file
.SH SYNOPSIS
.B xfs_metadump
[
.B \-aefFgow
] [
.B \-m
.I max_extents
] [
.B \-l
.I logdev
] [
.B \-v
.I version
]
.I source
.I target
.br
.B xfs_metadump \-V
.SH DESCRIPTION
.B xfs_metadump
is a debugging tool that copies the metadata from an XFS filesystem to a file.
The
.I source
argument must be the pathname of the device or file
containing the XFS filesystem and the
.I target
argument specifies the destination file name.
If
.I target
is \-, then the output is sent to stdout. This allows the output to be
redirected to another program such as a compression application.
.PP
.B xfs_metadump
may only be used to copy unmounted filesystems, or read-only mounted
filesystems.
.PP
.B xfs_metadump
does not alter the source filesystem in any way. The
.I target
image is a contiguous (non-sparse) file containing all the
filesystem's metadata and indexes to where the blocks were copied from.
.PP
By default,
.B xfs_metadump
obfuscates most file (regular file, directory and symbolic link) names
and extended attribute names to allow the dumps to be sent without
revealing confidential information. Extended attribute values are zeroed
and no data is copied. The only exceptions are file or attribute names
that are 4 or less characters in length. Also file names that span extents
(this can only occur with the
.BR mkfs.xfs (8)
options where
.B \-n
.I size
>
.B \-b
.IR size )
are not obfuscated. Names between 5 and 8 characters in length inclusively
are partially obfuscated.
.PP
.B xfs_metadump
cannot obfuscate metadata in the filesystem log.  Log
recovery of an obfuscated metadump image may expose clear-text
metadata and/or cause filesystem corruption in the restored image.
It is recommended that the source filesystem first be mounted and
unmounted, if possible, to ensure that the log is clean.
A subsequent invocation of
.B xfs_metadump
will capture a clean log and obfuscate all metadata correctly.
.PP
If a metadump must be produced from a filesystem with a dirty log,
it is recommended that obfuscation be turned off with -o option, if
metadata such as filenames is not considered sensitive.  If obfuscation
is required on a metadump with a dirty log, please inform the recipient
of the metadump image about this situation.
.PP
The contents of an external log device can be dumped only when using the v2
format.
Metadump in v2 format can be generated by passing the "-v 2" option.
Metadump in v2 format is generated by default if the filesystem has an
external log and the metadump version to use is not explicitly mentioned.
.PP
.B xfs_metadump
should not be used for any purposes other than for debugging and reporting
filesystem problems. The most common usage scenario for this tool is when
.BR xfs_repair (8)
fails to repair a filesystem and a metadump image can be sent for
analysis.
.PP
The file generated by
.B xfs_metadump
can be restored to filesystem image (minus the data) using the
.BR xfs_mdrestore (8)
tool.
.PP
.SH OPTIONS
.TP
.B \-a
Copies entire metadata blocks.  Normally,
.B xfs_metadump
will zero any stale
bytes interspersed with in-use metadata.  Use this option to copy full metadata
blocks, to provide more debugging information for a corrupted filesystem.  Note
that the extra data will be unobfuscated.
.TP
.B \-e
Stops the dump on a read error. Normally, it will ignore read errors and copy
all the metadata that is accessible.
.TP
.B \-f
Specifies that the filesystem image to be processed is stored in a regular file
(see the
.B mkfs.xfs -d
file option). This can also happen if an image copy of a filesystem has
been made into an ordinary file with
.BR xfs_copy (8).
.TP
.B \-F
Specifies that we want to continue even if the superblock magic is not correct.
If the source is truly not an XFS filesystem, the resulting image will be useless,
and xfs_metadump may crash.
.TP
.B \-g
Shows dump progress. This is sent to stdout if the
.I target
is a file or to stderr if the
.I target
is stdout.
.TP
.BI \-l " logdev"
For filesystems which use an external log, this specifies the device where the
external log resides.
If the v2 metadump format is selected, the contents of the external log will be
copied to the metadump.
The v2 metadump format will be selected automatically if this option is
specified.
.TP
.B \-m
Set the maximum size of an allowed metadata extent.  Extremely large metadata
extents are likely to be corrupt, and will be skipped if they exceed
this value.  The default size is 2097151 blocks.
.TP
.B \-o
Disables obfuscation of file names and extended attributes.
.TP
.B \-v
The format of the metadump file to be produced.
Valid values are 1 and 2.
The default metadump format is 1.
.TP
.B \-w
Prints warnings of inconsistent metadata encountered to stderr. Bad metadata
is still copied.
.TP
.B \-V
Prints the version number and exits.
.SH DIAGNOSTICS
.B xfs_metadump
returns an exit code of 0 if all readable metadata is successfully copied or
1 if a write error occurs or a read error occurs and the
.B \-e
option used.
.SH NOTES
As
.B xfs_metadump
copies metadata only, it does not matter if the
.I source
filesystem has a realtime section or not. If the filesystem has an external
log, it is not copied. Internal logs are copied and any outstanding log
transactions are not obfuscated if they contain names.
.PP
.B xfs_metadump
is a shell wrapper around the
.BR xfs_db (8)
.B metadump
command.
.SH SEE ALSO
.BR xfs_repair (8),
.BR xfs_mdrestore (8),
.BR xfs_freeze (8),
.BR xfs_db (8),
.BR xfs_copy (8),
.BR xfs (5)
.SH BUGS
Email bug reports to
.BR linux-xfs@vger.kernel.org .
